Skip to content

backlog: pre-landing sanitizer for ferry lint (Aaron Otto-119)#313

Closed
AceHack wants to merge 1 commit intomainfrom
backlog/pre-landing-sanitizer-for-ferry-lint
Closed

backlog: pre-landing sanitizer for ferry lint (Aaron Otto-119)#313
AceHack wants to merge 1 commit intomainfrom
backlog/pre-landing-sanitizer-for-ferry-lint

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented Apr 24, 2026

Files Aaron Otto-119 directive 'we should backlog longer-term, a pre-landing sanitizer could handle this automatically.' Captures the Otto-118+119 observed pattern.

🤖 Generated with Claude Code

Copilot AI review requested due to automatic review settings April 24, 2026 07:01
@AceHack AceHack enabled auto-merge (squash) April 24, 2026 07:01
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@AceHack AceHack force-pushed the backlog/pre-landing-sanitizer-for-ferry-lint branch from bec3f90 to 62a2ce3 Compare April 24, 2026 07:02
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new backlog item capturing the idea of an automated “pre-landing sanitizer” to mechanically fix recurring markdownlint-trigger patterns observed when absorbing Amara ferry content, reducing manual cleanup after CI failures.

Changes:

  • Add a P2-section backlog entry proposing an auto-sanitizer (script + integration hook/skill step) for common markdownlint-triggering patterns.
  • Document the initial scope, candidate fixes, and integration points for the sanitizer.

Comment thread docs/BACKLOG.md
Comment thread docs/BACKLOG.md
Comment thread docs/BACKLOG.md
@AceHack AceHack force-pushed the backlog/pre-landing-sanitizer-for-ferry-lint branch from 62a2ce3 to 7ec5478 Compare April 24, 2026 07:13
Copilot AI review requested due to automatic review settings April 24, 2026 07:23
@AceHack AceHack force-pushed the backlog/pre-landing-sanitizer-for-ferry-lint branch from 7ec5478 to 0f0cc55 Compare April 24, 2026 07:23
Filed per Aaron Otto-119 closing directive: 'also we should
backlog longer-term, a pre-landing sanitizer could handle this
automatically.'

Captures systemic lint-triggering patterns observed Otto-118+119
in verbatim-preserved Amara ferry content: line-start #<number>
→ H1 mis-parse; line-wrapped headings; missing blanks-around-
lists; trailing whitespace. Current manual per-ferry cleanup
pattern works; sanitizer automates.

P3 convenience; S+S effort.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@AceHack AceHack force-pushed the backlog/pre-landing-sanitizer-for-ferry-lint branch from 0f0cc55 to 81adecd Compare April 24, 2026 07:26
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.

@AceHack
Copy link
Copy Markdown
Member Author

AceHack commented Apr 24, 2026

Superseded by consolidated resurrect (PR to follow). Positional-rebase-conflict pattern — same as #319/#322 closure.

@AceHack AceHack closed this Apr 24, 2026
auto-merge was automatically disabled April 24, 2026 07:48

Pull request was closed

AceHack added a commit that referenced this pull request Apr 24, 2026
…+ #320)

PRs #313 (pre-landing sanitizer), #314 (claude --agent flag research),
and #320 (schema-as-graph) all hit DIRTY state from positional
rebase conflicts — each added a row at top of P2, but successive
merges of adjacent BACKLOG PRs kept moving the P2 top anchor. Each
branch's append collided with main's now-different top.

Closed all three and re-filed in a single consolidated PR above
the KSK-naming row. Order chosen by directive date:
1. Schema-as-Graph (Otto-127, most recent)
2. Research claude --agent flag (Otto-120)
3. Pre-landing sanitizer (Otto-119)

Superseded PRs:
- #313 backlog/pre-landing-sanitizer-for-ferry-lint
- #314 backlog/claude-cli-agent-flag-research-map
- #320 backlog/graph-as-schema-first-class-entities

Content preserved + condensed in this PR.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 24, 2026
…320) (#325)

* backlog: resurrect 3 BACKLOG rows consolidated (supersedes #313 + #314 + #320)

PRs #313 (pre-landing sanitizer), #314 (claude --agent flag research),
and #320 (schema-as-graph) all hit DIRTY state from positional
rebase conflicts — each added a row at top of P2, but successive
merges of adjacent BACKLOG PRs kept moving the P2 top anchor. Each
branch's append collided with main's now-different top.

Closed all three and re-filed in a single consolidated PR above
the KSK-naming row. Order chosen by directive date:
1. Schema-as-Graph (Otto-127, most recent)
2. Research claude --agent flag (Otto-120)
3. Pre-landing sanitizer (Otto-119)

Superseded PRs:
- #313 backlog/pre-landing-sanitizer-for-ferry-lint
- #314 backlog/claude-cli-agent-flag-research-map
- #320 backlog/graph-as-schema-first-class-entities

Content preserved + condensed in this PR.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix(#325): 2 review threads — priority/section alignment + <agent_name> inline-code escape

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
@AceHack AceHack reopened this Apr 24, 2026
@AceHack
Copy link
Copy Markdown
Member Author

AceHack commented Apr 24, 2026

Reopening per 2026-04-24 closed-PR audit (maintainer directive to recover over-closes). This PR captured an Aaron directive into docs/BACKLOG.md row(s); content is NOT on main through any other path; closure was part of my over-close cascade.

Status note: this PR adds rows to docs/BACKLOG.md. Per HB-002 blocker (per-row-BACKLOG migration pending), new flat-file BACKLOG.md rows are on hold. This PR sits open as a recovery landing point:

  • If maintainer wants the content landed as-is pre-split, override the HB-002 hold for this PR specifically.
  • Post per-row-BACKLOG split lands, the row(s) convert to per-row files and this PR can merge via the new substrate.
  • Either way, content is preserved and visible, not lost in a silent close.

Retractability-in-action per Otto-238: visible reopen; no silent reversal.

@AceHack
Copy link
Copy Markdown
Member Author

AceHack commented Apr 24, 2026

Re-closing — my earlier reopen was a false recovery. Audit of docs/BACKLOG.md shows this row's content is already on main via a different PR landing path (Otto-120 content found 2× on main, Otto-119 found 1×, Otto-139..149 found 3× among the multi-directive's rows). The content is NOT lost; merging this PR would create a duplicate row.

Maintainer flagged queue saturation (73 open PRs on LFG). Re-closing false-recovery reopens drops the count without losing content. Per retractability-in-action (Otto-238): visible re-close with rationale, not silent delete.

If any specific row from this PR needs recovery that I missed in the audit, reopen again with a pointer to the missing content.

@AceHack AceHack closed this Apr 24, 2026
AceHack added a commit to AceHack/Zeta that referenced this pull request Apr 29, 2026
…-Financial-Groupgh-401 runbook (interim memory home) (#104)

The post-double-hop close artifacts:

- docs/active-trajectory.md: priority section RE-CLOSED (rescinds the
  "blocking all other work" framing now that 0/0/0 holds again at
  17a2637). New "Post-double-hop
  sequencing" block lists the next-lane order per Amara: Lucent-Financial-Group#315
  (hourly budget), Lucent-Financial-Group#319 (bounded-retry CodeQL), Lucent-Financial-Group#318 (docs/ops
  taxonomy), Lucent-Financial-Group#317 (tick-fast-path), Lucent-Financial-Group#316 (absorbed into Lucent-Financial-Group#318),
  Lucent-Financial-Group#313/Lucent-Financial-Group#314, then branch/worktree recovery.

- docs/hygiene-history/ticks/2026/04/29/1452Z.md: tick shard for the
  PR Lucent-Financial-Group#846 review wave (4 unresolved threads — 3× Copilot P1 +
  1× Codex P2). Codex caught the structurally-deepest bug (host
  segment parsed but discarded silently before gh api graphql);
  Copilot caught the surface P1s. Review-ensemble complementarity.

- docs/hygiene-history/ticks/2026/04/29/1517Z.md: tick shard for the
  0/0/0 re-close ceremony at 15:17:09Z. Force-with-lease + ruleset
  toggle/restore + verify. Aaron's "why are you waiting on me"
  flagged as future-self lesson on standing-authority cadence
  (Otto-359 candidate).

- memory/reference_gh_cli_graphql_401_diagnostic_runbook_2026_04_29.md:
  diagnostic runbook for the gh CLI auth glitch where `gh api
  graphql` 401s while `gh api -X POST graphql` works. Amara
  framing: diagnostic note, not doctrine yet. INTERIM HOME: the
  runbook lives in memory/ for this round; long-term home is
  docs/ops/runbooks/gh-cli-auth-401.md per task Lucent-Financial-Group#318
  (docs/ops taxonomy — runbooks/patterns/incidents/ tree).

- memory/MEMORY.md: paired index entry for the runbook above
  (per memory-index-integrity rule).

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 29, 2026
* ops(0-0-0): post-double-hop close — trajectory + tick shards + gh-401 runbook (interim memory home)

The post-double-hop close artifacts:

- docs/active-trajectory.md: priority section RE-CLOSED (rescinds the
  "blocking all other work" framing now that 0/0/0 holds again at
  17a2637). New "Post-double-hop
  sequencing" block lists the next-lane order per Amara: #315
  (hourly budget), #319 (bounded-retry CodeQL), #318 (docs/ops
  taxonomy), #317 (tick-fast-path), #316 (absorbed into #318),
  #313/#314, then branch/worktree recovery.

- docs/hygiene-history/ticks/2026/04/29/1452Z.md: tick shard for the
  PR #846 review wave (4 unresolved threads — 3× Copilot P1 +
  1× Codex P2). Codex caught the structurally-deepest bug (host
  segment parsed but discarded silently before gh api graphql);
  Copilot caught the surface P1s. Review-ensemble complementarity.

- docs/hygiene-history/ticks/2026/04/29/1517Z.md: tick shard for the
  0/0/0 re-close ceremony at 15:17:09Z. Force-with-lease + ruleset
  toggle/restore + verify. Aaron's "why are you waiting on me"
  flagged as future-self lesson on standing-authority cadence
  (Otto-359 candidate).

- memory/reference_gh_cli_graphql_401_diagnostic_runbook_2026_04_29.md:
  diagnostic runbook for the gh CLI auth glitch where `gh api
  graphql` 401s while `gh api -X POST graphql` works. Amara
  framing: diagnostic note, not doctrine yet. INTERIM HOME: the
  runbook lives in memory/ for this round; long-term home is
  docs/ops/runbooks/gh-cli-auth-401.md per task #318
  (docs/ops taxonomy — runbooks/patterns/incidents/ tree).

- memory/MEMORY.md: paired index entry for the runbook above
  (per memory-index-integrity rule).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* ops(0-0-0): #847 Codex P2 — correct gh-401 runbook misdiagnosis (X POST is a no-op)

Codex P2 on PR #847: my prior runbook claimed `gh api graphql -f query='...'`
defaults to GET and that `-X POST` was the workaround. That's wrong: `gh api`
already sends POST when `-f` or `-F` parameters are present (per `gh api --help`).
The earlier "the X flag fixed it" observation was actually the upstream
auth-service glitch resolving in the few seconds between attempts —
misattributed.

Empirical verification:

  GH_DEBUG=api gh api graphql -f query='query { viewer { login } }' 2>&1 \
    | grep -E '^> POST|^> GET'
  # > POST /graphql HTTP/1.1   ← already POST without -X

Updated runbook to:
- Frame the failure mode correctly: transient upstream auth-service
  hiccup that recovers on its own (~30-90s window). Bounded retry is
  the answer, not flag-magic.
- Add explicit "Common misdiagnosis (corrected)" section so future-
  self doesn't re-derive the wrong fix.
- Keep CodeQL SARIF upload 401 as sibling failure mode (independently
  observed in CodeQL run logs, not the misattributed-flag failure).
- Cross-reference task #319 (bounded-retry CodeQL) for the durable
  fix Aaron specified per DST discipline.

Lesson captured in trigger-memory section: claim-without-verify is
the failure mode the Drain-Log Claim Verification Discipline (task
#316) catches. The rule applies to runbook-authoring in real time,
not just retroactive drain-log audits.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* ops(0-0-0): #847 retrigger — clear stale submit-nuget failure on deleted misnamed branch

Earlier in this PR's history, a push hit a misnamed branch on LFG
(post-0-0-0-reclose-followup-acehack-2026-04-29 instead of the lfg-named
counterpart). I corrected the push and the misnamed branch was later
auto-deleted. However, the submit-nuget workflow had already been
triggered against that branch and is now stuck because a rerun cannot
re-fetch the deleted ref.

The same SHA (65b20ee) has a SUCCESS run on the correct lfg-named
branch (run 25117920779), but the rollup also retains the FAILURE run
from the deleted branch (run 25117911328). Auto-merge BLOCKED on the
stale failure status.

Empty commit retrigger to land a fresh SHA where workflows fire only
on the correct branch context. No content change.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* ops(0-0-0): #847 review wave 2 — Copilot + 2× Codex corrections

Three unresolved review threads on #847 head, all valid:

1. Copilot — tick shard filename mismatch
   `1452Z.md` filename vs `14:58:00Z` row timestamp confused
   chronological sort. Renamed file to `1458Z.md` to match the
   row timestamp (the row had been revised when the round-close
   landed, but I forgot to rename the file).

2. Codex P1 — `gh api rate_limit` is not a reliable auth-health
   signal. Per GitHub REST docs, `GET /rate_limit` succeeds
   anonymously when only public resources are queried, so a
   missing/revoked token can show as healthy on this check.
   Replaced runbook step 3 with `gh api user` (requires auth,
   no anonymous fallback). Also corrected the "still works"
   block to call out the same caveat with explicit Codex P1
   credit + cross-reference to PR #847.

3. Codex P2 — frontmatter description over-asserted "not a
   token problem" while the body documents token-side branches.
   Softened to "FIRST hypothesis is transient upstream...
   always rule out token-side issues before assuming transient."
   Indexes/previews surfacing the description now don't
   short-circuit to "must be transient, retry."

The Codex P1 correction is structurally important: a runbook
that misclassifies "token problem" as "transient" delays the
real remediation path. Caught proactively before any operator
ran the broken triage.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* ops(0-0-0): #847 Codex P2 — fix stale -X POST claim in MEMORY.md index entry

Codex P2 caught that the MEMORY.md index entry I added still
referenced the old misdiagnosis (gh api -X POST works while gh api
graphql doesn't). The runbook itself was corrected, but the index
entry wasn't updated to match — readers seeing the index first
would be sent back toward the already-invalidated method-switch
theory instead of the intended transient-auth/token diagnosis.

Updated MEMORY.md index entry to:
- Remove the -X POST contrast claim
- Frame as "transient upstream auth-service 401s" first-hypothesis
- Cross-reference the Codex P2 correction with explicit credit
- Note token-side cases explicitly ("always rule out token-side
  issues — expired/revoked/SSO — before assuming transient")

Future-self lesson reinforced: when correcting a substrate file,
update ALL surfaces that reference its claims — body text, frontmatter,
INDEX entries, cross-refs in other files. Codex P2 caught what would
have been a silent-state-divergence between the runbook and its index.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* ops(0-0-0): #847 Copilot wave 4 — disambiguate session-task IDs from GitHub PR/issue numbers

Copilot caught that committed substrate references like `#319` auto-link
to GitHub PR/issue 319 (a closed Graph operator-algebra PR), not to the
session-local TaskList task 319 (bounded-retry CodeQL flakes) I intended.
This is a generalized substrate-discipline issue: my TaskList tool's IDs
share the `#NNN` namespace with GitHub PR/issue numbers and silently mis-link.

Verified the collision against LFG/Zeta:
  task 313 → GH PR/issue 313: backlog: pre-landing sanitizer for ferry lint  [closed]
  task 314 → GH PR/issue 314: backlog: claude --agent harness flag           [closed]
  task 315 → GH PR/issue 315: core: Veridicality.canonicalKey                [closed]
  task 316 → GH PR/issue 316: adr: Graph substrate ZSet-backed retraction    [closed]
  task 317 → GH PR/issue 317: core: Graph substrate skeleton                  [closed]
  task 318 → GH PR/issue 318: backlog: P3 KSK naming definition doc           [closed]
  task 319 → GH PR/issue 319: core: Graph operator-algebra composition        [closed]
  task 320 → GH PR/issue 320: backlog: Schema-as-Graph first-class entities  [closed]
  task 321 → GH PR/issue 321: core: Graph.largestEigenvalue power iteration  [closed]

ALL 9 session-task IDs from this session collide.

Sweep: replaced `#NNN` → `task NNN` (no hash) in committed substrate where
the reference is to a session-local task. Real GitHub PR/commit refs
(#846, #847, #101, #103, #845, etc.) keep their `#` prefix.

Files swept (22 total replacements):
- docs/active-trajectory.md (8)
- docs/hygiene-history/ticks/2026/04/29/1517Z.md (9)
- memory/reference_gh_cli_graphql_401_diagnostic_runbook_2026_04_29.md (3)
- memory/MEMORY.md (2)

Lesson for future-self: TaskCreate/TaskList IDs are session-local and
share namespace with GitHub PR/issue numbers. When writing committed
substrate that references them, use `task NNN` (no hash) format. The
hash-prefix is reserved for real GitHub references that should auto-link.
This composes with the Drain-Log Claim Verification Discipline + the
index-vs-body single-source-of-truth discipline — claims about other
artifacts must reference the right artifact.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants